=begin

This file is part of the RSIF project, http://rsif.googlecode.com

Copyright (c) 2009-2009 Roberto Dario Seminara <robertodarioseminara@gmail.com>

rsif is free software: you can redistribute it and/or modify
it under the terms of the gnu general public license as published by
the free software foundation, either version 3 of the license, or
(at your option) any later version.

rsif is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.  see the
gnu general public license for more details.

you should have received a copy of the gnu general public license
along with rsif.  if not, see <http://www.gnu.org/licenses/>.
=end

require "modules/module"

module Rsif
module Core
module Modules


class PseudoFactoryClass

  def dependencies
	@product_class.dependencies
  end

  def initialize( symbol, product_class, context )
    @symbol = symbol
    @product_class = product_class
    @context = context
  end
  def create(params)
    Factory.new(@symbol, @product_class, @context)
  end

  def can_instantiate
    @product_class.can_instantiate
  end

  def to_s
    "#{@product_class}_Factory"
  end
end

class Factory

  include Rsif::Core::Logging

  def initialize( symbol, product_class, context )
    @symbol = symbol
    @product_class = product_class
    @context = context
  end

  def run
    begin
      @context.define_symbol( @symbol, @product_class.create )
    rescue Exception => e
      logger.warn "#{e} al intentar definir simbolo #{@symbol}\n"
    end
  end
end

end
end
end

